package com.librelato.tela;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.librelato.bean.ChamadoBean;
import com.librelato.negocio.ChamadoServico;
import com.librelato.negocio.interfaces.IServicoGenerico;
import com.librelato.util.Ferramentas;

@ManagedBean
@ViewScoped
public class ConsultaChamadoGerenciaTela extends TelaAbstrata {

	private String dataDeFiltro;

	private String dataAteFiltro;

	private ChamadoServico<ChamadoBean> chamadoServico;

	private List<String> valoresAguardando;

	private String html;

	private Map<String, Map<String, Long>> valoresAtendidos;

	private Map<String, Map<String, Long>> valoresInsatisfeito;
	
	private HashMap<String,String> nomeMeses = new HashMap<String, String>();

	public ConsultaChamadoGerenciaTela() {
		this.chamadoServico = new ChamadoServico<ChamadoBean>();
		nomeMeses.put("1", "Janeiro");
		nomeMeses.put("2", "Fevereiro");
		nomeMeses.put("3", "Março");
		nomeMeses.put("4", "Abril");
		nomeMeses.put("5", "Maio");
		nomeMeses.put("6", "Junho");
		nomeMeses.put("7", "Julho");
		nomeMeses.put("8", "Agosto");
		nomeMeses.put("9", "Setembro");
		nomeMeses.put("10", "Outubro");
		nomeMeses.put("11", "Novembro");
		nomeMeses.put("12", "Dezembro");

	}

	public void filtraChamadosGerencia() {
		Map<String, Map<String, Long>> valoresGrade;
		try {
			valoresAguardando = new ArrayList<String>();
			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()),
					"localiza_total_aguarda_aprovacao");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);
			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_em_aberto");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_em_andamento");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_finalizados");
			valoresAtendidos = valoresGrade;
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_rejeitados");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_antend_fora");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_antend_prazo");
			geraGradeVisualPorMesDestino(valoresGrade, true, true, false);

			valoresGrade = this.chamadoServico
					.buscaTotalPorStatus(
							new java.sql.Date(Ferramentas.formataData(
									dataDeFiltro, "dd/MM/yy").getTime()),
							new java.sql.Date(Ferramentas.formataData(
									dataAteFiltro, "dd/MM/yy").getTime()),
							"localiza_total_insatisfeitos");
			valoresInsatisfeito = valoresGrade;
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()), "localiza_total_satisfeitos");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, true);

			valoresGrade = this.chamadoServico.buscaTotalPorStatus(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()),
					"localiza_total_chamados_mes_destino");
			geraGradeVisualPorMesDestino(valoresGrade, true, false, false);

			valoresGrade = this.chamadoServico.buscaTotalNotaMes(
					new java.sql.Date(Ferramentas.formataData(dataDeFiltro,
							"dd/MM/yy").getTime()), new java.sql.Date(
							Ferramentas.formataData(dataAteFiltro, "dd/MM/yy")
									.getTime()));
			geraGradeVisualNotasMes(valoresGrade);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("rawtypes")
	private void geraGradeVisualPorMesDestino(
			Map<String, Map<String, Long>> valoresGrade, boolean somaTotal,
			boolean calculaPercentualAtendidos,
			boolean calculaPercentualSatisfeito) {
		StringBuilder sb = new StringBuilder();

		long totalSetor = 0;
		long totalChamado = 0;

		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("Comunicação") != null) {
				sb.append(valor.get("Comunicação"));
				if (somaTotal) {
					totalSetor += valor.get("Comunicação");
				}
			} else {
				sb.append("0");

			}
			sb.append("</td>");

			if (calculaPercentualAtendidos) {

				double valorAtendidoPrazo = (double) (valor.get("Comunicação") != null ? valor
						.get("Comunicação") : 0);
				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Comunicação") != null ? valoresAtendidos
						.get(key).get("Comunicação") : 0;

				double percentual = (valorAtendidoPrazo / valorAtendido) * 100;
				if (percentual >= 90) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##").format(percentual));
				sb.append("%</td>");
			}

			if (calculaPercentualSatisfeito) {

				double valorInsatisfeito = valoresInsatisfeito.get(key) != null
						&& valoresInsatisfeito.get(key).get("Comunicação") != null ? valoresInsatisfeito
						.get(key).get("Comunicação") : 0;

				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Comunicação") != null ? valoresAtendidos
						.get(key).get("Comunicação") : 0;

				double percentual = ((valorAtendido - valorInsatisfeito) / valorAtendido) * 100;

				if (percentual >= 95) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##").format(percentual));
				sb.append("%</td>");
			}

			sb.append("</tr>");
		}
		if (somaTotal) {
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>Total</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			sb.append(totalSetor);
			sb.append("</td>");
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		totalChamado += totalSetor;
		totalSetor = 0;
		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("Desenvolvimento") != null) {
				sb.append(valor.get("Desenvolvimento"));
				if (somaTotal) {
					totalSetor += valor.get("Desenvolvimento");
				}
			} else {
				sb.append("0");
			}
			sb.append("</td>");
			if (calculaPercentualAtendidos) {
				double valorAtendidoPrazo = (double) (valor
						.get("Desenvolvimento") != null ? valor
						.get("Desenvolvimento") : 0);
				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Desenvolvimento") != null ? valoresAtendidos
						.get(key).get("Desenvolvimento") : 0;
				double percentual = (valorAtendidoPrazo / valorAtendido) * 100;
				if (percentual >= 90) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##")
						.format((valorAtendidoPrazo / valorAtendido) * 100));
				sb.append("%</td>");
			}

			if (calculaPercentualSatisfeito) {

				double valorInsatisfeito = valoresInsatisfeito.get(key) != null
						&& valoresInsatisfeito.get(key).get("Desenvolvimento") != null ? valoresInsatisfeito
						.get(key).get("Desenvolvimento") : 0;

				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Desenvolvimento") != null ? valoresAtendidos
						.get(key).get("Desenvolvimento") : 0;

				double percentual = ((valorAtendido - valorInsatisfeito) / valorAtendido) * 100;

				if (percentual >= 95) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##").format(percentual));
				sb.append("%</td>");
			}

			sb.append("</tr>");
		}
		if (somaTotal) {
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>Total</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			sb.append(totalSetor);
			sb.append("</td>");
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		totalChamado += totalSetor;
		totalSetor = 0;
		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("Engenharia") != null) {
				sb.append(valor.get("Engenharia"));
				if (somaTotal) {
					totalSetor += valor.get("Engenharia");
				}
			} else {
				sb.append("0");
			}
			sb.append("</td>");
			if (calculaPercentualAtendidos) {
				double valorAtendidoPrazo = (double) (valor.get("Engenharia") != null ? valor
						.get("Engenharia") : 0);
				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Engenharia") != null ? valoresAtendidos
						.get(key).get("Engenharia") : 0;
				double percentual = (valorAtendidoPrazo / valorAtendido) * 100;
				if (percentual >= 90) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##")
						.format((valorAtendidoPrazo / valorAtendido) * 100));
				sb.append("%</td>");
			}

			if (calculaPercentualSatisfeito) {

				double valorInsatisfeito = valoresInsatisfeito.get(key) != null
						&& valoresInsatisfeito.get(key).get("Engenharia") != null ? valoresInsatisfeito
						.get(key).get("Engenharia") : 0;

				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Engenharia") != null ? valoresAtendidos
						.get(key).get("Engenharia") : 0;

				double percentual = ((valorAtendido - valorInsatisfeito) / valorAtendido) * 100;

				if (percentual >= 95) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##").format(percentual));
				sb.append("%</td>");
			}
			sb.append("</tr>");
		}
		if (somaTotal) {
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>Total</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			sb.append(totalSetor);
			sb.append("</td>");
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		totalChamado += totalSetor;
		totalSetor = 0;
		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("Hardware") != null) {
				sb.append(valor.get("Hardware"));
				if (somaTotal) {
					totalSetor += valor.get("Hardware");
					// totalChamado += totalSetor;
				}
			} else {
				sb.append("0");
			}
			sb.append("</td>");
			if (calculaPercentualAtendidos) {
				double valorAtendidoPrazo = (double) (valor.get("Hardware") != null ? valor
						.get("Hardware") : 0);
				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Hardware") != null ? valoresAtendidos
						.get(key).get("Hardware") : 0;
				double percentual = (valorAtendidoPrazo / valorAtendido) * 100;
				if (percentual >= 90) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##")
						.format((valorAtendidoPrazo / valorAtendido) * 100));
				sb.append("%</td>");
			}

			if (calculaPercentualSatisfeito) {

				double valorInsatisfeito = valoresInsatisfeito.get(key) != null
						&& valoresInsatisfeito.get(key).get("Hardware") != null ? valoresInsatisfeito
						.get(key).get("Hardware") : 0;

				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Hardware") != null ? valoresAtendidos
						.get(key).get("Hardware") : 0;

				double percentual = ((valorAtendido - valorInsatisfeito) / valorAtendido) * 100;

				if (percentual >= 95) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##").format(percentual));
				sb.append("%</td>");
			}
			sb.append("</tr>");
		}
		if (somaTotal) {
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>Total</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			sb.append(totalSetor);
			sb.append("</td>");
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		totalChamado += totalSetor;
		totalSetor = 0;
		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("Software") != null) {
				sb.append(valor.get("Software"));
				if (somaTotal) {
					totalSetor += valor.get("Software");
				}
			} else {
				sb.append("0");
			}
			sb.append("</td>");
			if (calculaPercentualAtendidos) {
				double valorAtendidoPrazo = (double) (valor.get("Software") != null ? valor
						.get("Software") : 0);
				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Software") != null ? valoresAtendidos
						.get(key).get("Software") : 0;
				double percentual = (valorAtendidoPrazo / valorAtendido) * 100;
				if (percentual >= 90) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##")
						.format((valorAtendidoPrazo / valorAtendido) * 100));
				sb.append("%</td>");
			}

			if (calculaPercentualSatisfeito) {

				double valorInsatisfeito = valoresInsatisfeito.get(key) != null
						&& valoresInsatisfeito.get(key).get("Software") != null ? valoresInsatisfeito
						.get(key).get("Software") : 0;

				double valorAtendido = valoresAtendidos.get(key) != null
						&& valoresAtendidos.get(key).get("Software") != null ? valoresAtendidos
						.get(key).get("Software") : 0;

				double percentual = ((valorAtendido - valorInsatisfeito) / valorAtendido) * 100;

				if (percentual >= 95) {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(40, 199, 0);font-weight: bold;color: black;'>");
				} else {
					sb.append("<td role='gridcell' colspan='2' style='background-color: rgb(255, 8, 8);font-weight: bold;color: black;'>");
				}
				sb.append(new DecimalFormat("#.##").format(percentual));
				sb.append("%</td>");
			}
			sb.append("</tr>");
		}
		if (somaTotal) {
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>Total</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			sb.append(totalSetor);
			sb.append("</td>");
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());
		totalChamado += totalSetor;

		if (somaTotal) {
			sb = new StringBuilder();
			sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
			sb.append("<thead class='ui-panelgrid-header'>");
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ "Total" + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			sb.append(totalChamado);
			sb.append("</thead>");
			sb.append("</table>");
			valoresAguardando.add(sb.toString());
		}

	}

	@SuppressWarnings("rawtypes")
	private void geraGradeVisualNotasMes(
			Map<String, Map<String, Long>> valoresGrade) {
		StringBuilder sb = new StringBuilder();

		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("5") != null) {
				sb.append(valor.get("5"));
			} else {
				sb.append("0");
			}
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("4") != null) {
				sb.append(valor.get("4"));
			} else {
				sb.append("0");
			}
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("3") != null) {
				sb.append(valor.get("3"));
			} else {
				sb.append("0");
			}
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("2") != null) {
				sb.append(valor.get("2"));
			} else {
				sb.append("0");
			}
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());

		sb = new StringBuilder();
		sb.append("<table class='ui-panelgrid ui-widget' style='margin-top:5px;margin-bottom:5px;margin-left: auto;margin-right: auto;' role='grid'>");
		sb.append("<thead class='ui-panelgrid-header'>");
		for (Iterator it = valoresGrade.keySet().iterator(); it.hasNext();) {
			String key = (String) it.next();
			Map<String, Long> valor = valoresGrade.get(key);
			sb.append("<tr role='row'>");
			sb.append("<td role='columnheader' class='ui-widget-header' colspan='2'>"
					+ nomeMeses.get(key) + "</td>");
			sb.append("<td role='gridcell' colspan='2'>");
			if (valor.get("1") != null) {
				sb.append(valor.get("1"));
			} else {
				sb.append("0");
			}
			sb.append("</tr>");
		}
		sb.append("</thead>");
		sb.append("</table>");
		valoresAguardando.add(sb.toString());
	}

	@SuppressWarnings("rawtypes")
	@Override
	protected IServicoGenerico getServico() {
		return this.chamadoServico;
	}

	public String getDataDeFiltro() {
		return dataDeFiltro;
	}

	public void setDataDeFiltro(String dataDeFiltro) {
		this.dataDeFiltro = dataDeFiltro;
	}

	public String getDataAteFiltro() {
		return dataAteFiltro;
	}

	public void setDataAteFiltro(String dataAteFiltro) {
		this.dataAteFiltro = dataAteFiltro;
	}

	public ChamadoServico<ChamadoBean> getChamadoServico() {
		return chamadoServico;
	}

	public void setChamadoServico(ChamadoServico<ChamadoBean> chamadoServico) {
		this.chamadoServico = chamadoServico;
	}

	public String getHtml() {
		return html;
	}

	public void setHtml(String html) {
		this.html = html;
	}

	public List<String> getValoresAguardando() {
		return valoresAguardando;
	}

	public void setValoresAguardando(List<String> valoresAguardando) {
		this.valoresAguardando = valoresAguardando;
	}

	public Map<String, Map<String, Long>> getValoresInsatisfeito() {
		return valoresInsatisfeito;
	}

	public void setValoresInsatisfeito(
			Map<String, Map<String, Long>> valoresInsatisfeito) {
		this.valoresInsatisfeito = valoresInsatisfeito;
	}
}
